The present invention relates to selective process restart based on application programming interface (API) changes. More specifically, the invention relates to storing process-to-API and process-to-container dependencies in order to determine the processes, and only those processes, that are affected by API changes.
In most software systems, a collection of software modules will provide an implementation of a service. This service will be accessed by the application through the use of an API. The API itself has a set of symbols (functions and data elements) that comprise the software state and the modifiers of that software state. A given implementation of a service, provided by a specific set of modules, and accessed through the specified API will be referred to as an API service implementation. Typically, both the API and the API service implementation will have versions (e.g., numbers or anything to uniquely identify the version) associated with them. The API has a version, which tracks modification to the definition of the API, such as which symbols are a part of it and what the signature of those symbols is. For data elements, the signature of the symbol is the data type description. For functions, the signature contains the data type descriptions of the return value and all of the parameter values of the function.
The API service implementation also has a version associated with it. This is the version assigned to the collection of modules and tracks the revisions of the modules in the implementation of the defined API.
A specific API service implementation will implement a particular version of the API. At the time that an application is started, it may require the use of an API service implementation that implements the specific version of the API that it makes use of.
There may be multiple versions of an API service implementation present on a system and the system should choose the appropriate version that will be loaded in the address space of the application when it is started. These versions come about as bugs are fixed or new functions are added to an API and new revisions of the software modules that comprise the API service implementation are released to customers.
In a software system where multiple versions of a particular API service implementation can exist simultaneously, one could restart all the processes so that any process that might be impacted by a change in an API service implementation would be restarted. However, it would be beneficial to have innovative technologies that allow a determination of the processes that are affected by changes in an API service implementation so that only those processes are restarted. Additionally, it would be beneficial to be able to determine when there are no processes that could ever utilize an API service implementation so the unused API service implementation can be deleted.